op 	 {
  name: "CollectiveReduceV2"
  input_arg {
    name: "input"
    type_attr: "T"
  }
  input_arg {
    name: "group_size"
    type: DT_INT32
  }
  input_arg {
    name: "group_key"
    type: DT_INT32
  }
  input_arg {
    name: "instance_key"
    type: DT_INT32
  }
  output_arg {
    name: "data"
    type_attr: "T"
  }
  attr {
    name: "T"
    type: "type"
    allowed_values {
      list {
        type: DT_FLOAT
        type: DT_HALF
        type: DT_DOUBLE
        type: DT_INT32
        type: DT_INT64
      }
    }
  }
  attr {
    name: "merge_op"
    type: "string"
    allowed_values {
      list {
        s: "Min"
        s: "Max"
        s: "Mul"
        s: "Add"
      }
    }
  }
  attr {
    name: "final_op"
    type: "string"
    allowed_values {
      list {
        s: "Id"
        s: "Div"
      }
    }
  }
  attr {
    name: "communication_hint"
    type: "string"
    default_value {
      s: "auto"
    }
  }
  is_stateful: true
}
op {
  name: "CollectiveReduceV2"
  input_arg {
    name: "input"
    type_attr: "T"
  }
  input_arg {
    name: "group_size"
    type: DT_INT32
  }
  input_arg {
    name: "group_key"
    type: DT_INT32
  }
  input_arg {
    name: "instance_key"
    type: DT_INT32
  }
  output_arg {
    name: "data"
    type_attr: "T"
  }
  attr {
    name: "T"
    type: "type"
    allowed_values {
      list {
        type: DT_FLOAT
        type: DT_HALF
        type: DT_DOUBLE
        type: DT_INT32
        type: DT_INT64
      }
    }
  }
  attr {
    name: "merge_op"
    type: "string"
    allowed_values {
      list {
        s: "Min"
        s: "Max"
        s: "Mul"
        s: "Add"
      }
    }
  }
  attr {
    name: "final_op"
    type: "string"
    allowed_values {
      list {
        s: "Id"
        s: "Div"
      }
    }
  }
  attr {
    name: "communication_hint"
    type: "string"
    default_value {
      s: "auto"
    }
  }
  attr {
    name: "timeout_seconds"
    type: "float"
    default_value {
      f: 0
    }
  }
  is_stateful: true
}
op {
  name: "CollectiveReduceV2"
  input_arg {
    name: "input"
    type_attr: "T"
  }
  input_arg {
    name: "group_size"
    type: DT_INT32
  }
  input_arg {
    name: "group_key"
    type: DT_INT32
  }
  input_arg {
    name: "instance_key"
    type: DT_INT32
  }
  input_arg {
    name: "ordering_token"
    type: DT_RESOURCE
    number_attr: "Nordering_token"
  }
  output_arg {
    name: "data"
    type_attr: "T"
  }
  attr {
    name: "T"
    type: "type"
    allowed_values {
      list {
        type: DT_FLOAT
        type: DT_HALF
        type: DT_DOUBLE
        type: DT_INT32
        type: DT_INT64
      }
    }
  }
  attr {
    name: "merge_op"
    type: "string"
    allowed_values {
      list {
        s: "Min"
        s: "Max"
        s: "Mul"
        s: "Add"
      }
    }
  }
  attr {
    name: "final_op"
    type: "string"
    allowed_values {
      list {
        s: "Id"
        s: "Div"
      }
    }
  }
  attr {
    name: "communication_hint"
    type: "string"
    default_value {
      s: "auto"
    }
  }
  attr {
    name: "timeout_seconds"
    type: "float"
    default_value {
      f: 0
    }
  }
  attr {
    name: "Nordering_token"
    type: "int"
    default_value {
      i: 0
    }
    has_minimum: true
  }
  is_stateful: true
}
op {
  name: "CollectiveReduceV2"
  input_arg {
    name: "input"
    type_attr: "T"
  }
  input_arg {
    name: "group_size"
    type: DT_INT32
  }
  input_arg {
    name: "group_key"
    type: DT_INT32
  }
  input_arg {
    name: "instance_key"
    type: DT_INT32
  }
  input_arg {
    name: "ordering_token"
    type: DT_RESOURCE
    number_attr: "Nordering_token"
  }
  output_arg {
    name: "data"
    type_attr: "T"
  }
  attr {
    name: "T"
    type: "type"
    allowed_values {
      list {
        type: DT_FLOAT
        type: DT_HALF
        type: DT_DOUBLE
        type: DT_INT32
        type: DT_INT64
      }
    }
  }
  attr {
    name: "merge_op"
    type: "string"
    allowed_values {
      list {
        s: "Min"
        s: "Max"
        s: "Mul"
        s: "Add"
      }
    }
  }
  attr {
    name: "final_op"
    type: "string"
    allowed_values {
      list {
        s: "Id"
        s: "Div"
      }
    }
  }
  attr {
    name: "communication_hint"
    type: "string"
    default_value {
      s: "auto"
    }
  }
  attr {
    name: "timeout_seconds"
    type: "float"
    default_value {
      f: 0
    }
  }
  attr {
    name: "Nordering_token"
    type: "int"
    default_value {
      i: 0
    }
    has_minimum: true
  }
  attr {
    name: "max_subdivs_per_device"
    type: "int"
    default_value {
      i: -1
    }
  }
  is_stateful: true
}
op {
  name: "CollectiveReduceV2"
  input_arg {
    name: "input"
    type_attr: "T"
  }
  input_arg {
    name: "group_size"
    type: DT_INT32
  }
  input_arg {
    name: "group_key"
    type: DT_INT32
  }
  input_arg {
    name: "instance_key"
    type: DT_INT32
  }
  input_arg {
    name: "ordering_token"
    type: DT_RESOURCE
    number_attr: "Nordering_token"
  }
  output_arg {
    name: "data"
    type_attr: "T"
  }
  attr {
    name: "T"
    type: "type"
    allowed_values {
      list {
        type: DT_BFLOAT16
        type: DT_FLOAT
        type: DT_HALF
        type: DT_DOUBLE
        type: DT_INT32
        type: DT_INT64
      }
    }
  }
  attr {
    name: "merge_op"
    type: "string"
    allowed_values {
      list {
        s: "Min"
        s: "Max"
        s: "Mul"
        s: "Add"
      }
    }
  }
  attr {
    name: "final_op"
    type: "string"
    allowed_values {
      list {
        s: "Id"
        s: "Div"
      }
    }
  }
  attr {
    name: "communication_hint"
    type: "string"
    default_value {
      s: "auto"
    }
  }
  attr {
    name: "timeout_seconds"
    type: "float"
    default_value {
      f: 0
    }
  }
  attr {
    name: "Nordering_token"
    type: "int"
    default_value {
      i: 0
    }
    has_minimum: true
  }
  attr {
    name: "max_subdivs_per_device"
    type: "int"
    default_value {
      i: -1
    }
  }
  is_stateful: true
}
op {
  name: "CollectiveReduceV2"
  input_arg {
    name: "input"
    type_attr: "T"
  }
  input_arg {
    name: "group_size"
    type: DT_INT32
  }
  input_arg {
    name: "group_key"
    type: DT_INT32
  }
  input_arg {
    name: "instance_key"
    type: DT_INT32
  }
  input_arg {
    name: "ordering_token"
    type: DT_RESOURCE
    number_attr: "Nordering_token"
  }
  output_arg {
    name: "data"
    type_attr: "T"
  }
  attr {
    name: "T"
    type: "type"
    allowed_values {
      list {
        type: DT_BFLOAT16
        type: DT_FLOAT
        type: DT_HALF
        type: DT_DOUBLE
        type: DT_INT32
        type: DT_INT64
      }
    }
  }
  attr {
    name: "merge_op"
    type: "string"
    allowed_values {
      list {
        s: "Min"
        s: "Max"
        s: "Mul"
        s: "Add"
      }
    }
  }
  attr {
    name: "final_op"
    type: "string"
    allowed_values {
      list {
        s: "Id"
        s: "Div"
      }
    }
  }
  attr {
    name: "communication_hint"
    type: "string"
    default_value {
      s: "auto"
    }
  }
  attr {
    name: "timeout_seconds"
    type: "float"
    default_value {
      f: 0
    }
  }
  attr {
    name: "Nordering_token"
    type: "int"
    default_value {
      i: 0
    }
    has_minimum: true
  }
  attr {
    name: "max_subdivs_per_device"
    type: "int"
    default_value {
      i: -1
    }
  }
  is_stateful: true
  is_distributed_communication: true
}
op {
  name: "CollectiveReduceV2"
  input_arg {
    name: "input"
    type_attr: "T"
  }
  input_arg {
    name: "group_size"
    type: DT_INT32
  }
  input_arg {
    name: "group_key"
    type: DT_INT32
  }
  input_arg {
    name: "instance_key"
    type: DT_INT32
  }
  input_arg {
    name: "ordering_token"
    type: DT_RESOURCE
    number_attr: "Nordering_token"
  }
  output_arg {
    name: "data"
    type_attr: "T"
  }
  attr {
    name: "T"
    type: "type"
    allowed_values {
      list {
        type: DT_BFLOAT16
        type: DT_FLOAT
        type: DT_HALF
        type: DT_DOUBLE
        type: DT_INT32
        type: DT_INT64
      }
    }
  }
  attr {
    name: "merge_op"
    type: "string"
    allowed_values {
      list {
        s: "Min"
        s: "Max"
        s: "Mul"
        s: "Add"
      }
    }
  }
  attr {
    name: "final_op"
    type: "string"
    allowed_values {
      list {
        s: "Id"
        s: "Div"
      }
    }
  }
  attr {
    name: "communication_hint"
    type: "string"
    default_value {
      s: "auto"
    }
  }
  attr {
    name: "timeout_seconds"
    type: "float"
    default_value {
      f: 0
    }
  }
  attr {
    name: "is_stateless"
    type: "bool"
    default_value {
      b: false
    }
  }
  attr {
    name: "Nordering_token"
    type: "int"
    default_value {
      i: 0
    }
    has_minimum: true
  }
  attr {
    name: "max_subdivs_per_device"
    type: "int"
    default_value {
      i: -1
    }
  }
  is_stateful: true
  is_distributed_communication: true
}
